package com.itheima.config;

import com.itheima.domain.Goods;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 *
 * feign接口，目的是关联调用provider生产者服务中的接口
 * @FeignClient(name="")表示feign客户端，参数一定是注册到注册中心中服务id
 * 表示当前feign接口是连接的当前服务的对外暴露的接口
 *configuration = FeignLogConfig.class
 *   表示当前使用FeignLogConfig这个类来输出日志
 * fallback 设置服务降级处理类  消费方
 *
 *
 */
@FeignClient(name = "SpringCloud-nacos-provider",configuration = FeignLogConfig.class,fallback = GoodsFeginClientImpl.class)
@Component
public interface GoodsFeginClient {

    /**
     * 使用fegin接口来隐藏restTemplate
     * @PathVariable 必须指定名称
     * @param id
     * @return
     *
     *
     * 只需要把provider服务中contoller的方法拷贝过来即可(provider服务对外暴露的接口)
     * 在feign接口中接口的请求路径地址的组成
     *
     *  @GetMapping("/goods/findOne/{id}")
     *             goods是类的请求映射名称
     *             findOne/{id}是方法的请求映射名称
     *
     */
    @GetMapping("/goods/findOne/{id}")
    public Goods findOne(@PathVariable("id") int id);
}
